This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present disclosure that are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present disclosure. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
In the description, the word ‘client’ can be used to refer to the TCP client, i.e. the device that sends a SYN message and an ACK message, and the word ‘server’ can be used to refer to the TCP server, i.e. the device that receives the SYN message. It will thus be appreciated that such a ‘client’ may be a server (such as a web server) in the more ordinary use of the term and that a ‘server’ may, in a corresponding manner, be a client such as a web client. How these terms are to be interpreted is clear from the context.
TCP/IP is a very well-known communication protocol. To establish a TCP/IP connection between two devices, the devices perform a TCP handshake illustrated in FIG. 1. A first device—called the client—sends a SYN(m) message comprising the IP address of the first device and a first integer m to a second device—called the server. If the server accepts the request, it responds to the received IP address with a SYN-ACK(m+1, n) message that comprises a second integer n and the first integer m incremented by 1, i.e. m+1. After sending the SYN message, the client keeps a record of the sent SYN message and waits for a predetermined time; if it has not received a corresponding SYN-ACK message before the time lapses, it stops waiting. Upon reception of the SYN-ACK message from the server, the client checks that the SYN-ACK message comprises m+1. If this is the case, the acknowledges reception by sending an ACK(n+1) message comprising the second integer n incremented by 1, i.e. n+1, to the server. The server finally verifies that the ACK message comprises n+1. Provided that the server's verification is successful, after this, the handshake has been successfully performed.
In certain situations, such as when the client tries to perform handshakes with a plurality of servers in parallel, it can be problem that the device have to keep resources allocated during the handshake. For each emitted or received SYN, the TCP stack initiates one Transmission Control Block (TCB) record, each requiring several hundreds of bytes. During the 3-way handshake, no a priori assumption is made on the network speed. Consequently, TCB records possibly survive for a long time, consuming resources. Even worse, when sending SYNs to devices that are not connected or do not respond the TCP stack maintains the corresponding TCBs for some time (the timeout duration), thus wasting resources.
It will be appreciated that it is desired to have a solution that overcomes at least part of the problems related to the TCP handshake. The present disclosure provides such a solution.